package com.juc.objecthead;

import org.openjdk.jol.info.ClassLayout;
import org.openjdk.jol.vm.VM;

/**
 * @Author : Zan
 * @Create : 2024/5/12 20:53
 * @ClassName : JOLDemo
 * @Description : TODO 请用一句话描述该类的功能
 */
public class JOLDemo {
    public static void main(String[] args) {
        // -XX:MaxTenuringThreshold=16
        // Thread.currentThread
//        System.out.println(VM.current().details()); // 当前虚拟机VM的细节详细情况

        // 所有的对象分配的字节都是8的整数倍 - 对象的填充数
//        System.out.println(VM.current().objectAlignment());

        Object o = new Object();

        System.out.println(ClassLayout.parseInstance(o).toPrintable());

        Customer c1 = new Customer();
        System.out.println(ClassLayout.parseInstance(c1).toPrintable());

    }
}

class Customer {

    // 1.第一种情况，只有对象头，没有其他任何实例数据（属性实例）

    // 2.第二种情况，int + boolean，默认满足对其填充：24 bytes
//    int id;
//    boolean flag = false;
//    boolean flag2 = false;
}

/**
 * 1.默认配置，启动了压缩指针：-XX:+UseCompressedClassPointers
 *      12 + 4（对齐填充）：16个字节
 *
 * 2.手动配置，关闭了压缩指针：-XX:-UseCompressedClassPointers
 */
